;; Copyright 2020-2025 The Defold Foundation
;; Copyright 2014-2020 King
;; Copyright 2009-2014 Ragnar Svensson, Christian Murray
;; Licensed under the Defold License version 1.0 (the "License"); you may not use
;; this file except in compliance with the License.
;;
;; You may obtain a copy of the License, together with FAQs at
;; https://www.defold.com/license
;;
;; Unless required by applicable law or agreed to in writing, software distributed
;; under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
;; CONDITIONS OF ANY KIND, either express or implied. See the License for the
;; specific language governing permissions and limitations under the License.

(ns util.profiler
  (:import [com.defold.util Profiler]))

(set! *warn-on-reflection* true)

(defmacro profile
  [name user & body]
  `(let [s# (Profiler/begin ~name ~user)]
     (try
       ~@body
       (finally
         (Profiler/end s#)))))

(defn begin-frame []
  (Profiler/beginFrame))

(defn dump-json []
  (Profiler/dumpJson))
